package com.wgy.day25.可变参数;

/*
可变参数:是JDK1.5之后出现的新特性
使用前提:当方法的参数列表数据类型已经确定,但是参数的个数不确定时,就可以使用可变参数

使用格式: 修饰符 返回值类型 方法名称(数据类型...变量名){}

可变参数的原理:可变参数是一个数组,根据传递参数个数的不同,会创建不同长度的数组,来存储这些参数
            传递的参数个数,可以是0个(不传递),1,2,3...多个

可变参数的注意事项:
             1.一个方法的参数列表,只能有一个可变参数
             2.如果方法成参数有多个,那么可变参数必须写在参数列表的末尾
             3.可变参数的终极写法 public static void method(Object...obj){}
*/
public class Demo01VarArgs {
    public static void main(String[] args) {
        int sum = sum3(1, 2, 3, 4, 5, 6, 7, 8, 9, 10);
        System.out.println(sum);

    }

    //定义一个方法,计算两个int类型整数的和
    public static int sum1(int a, int b) {
        return a + b;
    }

    //定义一个方法,计算三个int类型整数的和
    public static int sum2(int a, int b, int c) {
        return a + b + c;
    }

    //定义一个方法,计算多个int类型整数的和

    public static int sum3(int... arr) {
        System.out.println(arr);            //[I@16b98e56 底层是一个数组
        System.out.println(arr.length);     //10
        int num = 0;

        /*for (int i = 0; i < arr.length; i++) {
            num += arr[i];
        }
        System.out.println(num);*/
        //使用增强for
        for (int i : arr) {
            num += i;
        }
        return num;                      //55
    }

    // public static int sum4(int... arr, String... b) {}  // 错误写法:  一个方法的参数列表,只能有一个可变参数
    // public static int sum5(boolean d, double c, String b, int... a) {} 正确写法: 如果方法成参数有多个,那么可变参数必须写在参数列表的末尾

}
